/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package adbus.models;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.LinkedList;
/**
 *gluwna klasa PrzewoznikTable
 * @author Kasia
 */
public class PrzewoznikTable extends Table{
    
    protected Przewoznik carrier = new Przewoznik();

    protected LinkedList<Przewoznik> carrierList = null;
    /**metoda pobierająca liste przewoznikow*/
    public void pobierzListe() {
        carrierList = carrier.pobierz();
        fireTableDataChanged();
    }

    @Override
    /**metoda zwracająca przewoznikow z tabeli Przewoźnicy*/
    public String basicQuery() {
        return "SELECT * FROM Przewoźnicy";
    }
    /**konstruktor kalsy PrzewozikTable*/
    public PrzewoznikTable() {
        super();
        zaladuj();
        pobierzListe();
    }
    /**metoda zwracająca długość listy przewoznikow*/
    public int getRowCount() {
        try {
            return result.last() ? result.getRow() : 0;
        } catch (SQLException ex) {
            Logger.getLogger(PrzewoznikTable.class.getName()).log(Level.SEVERE, null, ex);
            return 0;
        }
    }
    @Override
    /**metoda ustawiająca nazwy kolumn w wyświetlanej tabelce przewoznicy*/
    public String getColumnName(int index) {
        switch(index) {
            case 0: return "ID";
            case 1: return "Nazwa";
            case 2: return "Adres";
            case 3: return "Miasto";
            case 4: return "Telefon";
            case 5: return "Mail";
            case 6: return "Data Dodania";
            default: return "";
        }
    }
    /**metoda zwracająca liczbe kolumn tabeli przewoznicy*/
    public int getColumnCount() {
        return 7;
    }
/**metoda wstawiająca dane do wyświetlanej tabelki przewoznicy*/
    public Object getValueAt(int rowIndex, int columnIndex) {
        try {
            result.first();
            result.absolute(rowIndex + 1);
            return result.getObject(columnIndex + 1);
        } catch (SQLException ex) {
            Logger.getLogger(PrzewoznikTable.class.getName()).log(Level.SEVERE, null, ex);
            return "";
        }
    }
/**metoda odpowiedzialna za filtrowanie przewoznikow po dacie*/
    public void setDateFilter(String from, String to) {
        String condition = "";
        if(from.equals("") && to.equals("")) {
            filters.remove("data_dodania");
            filtersval.remove("data_dodania");
            filtersval.remove("data_dodania2");
            return;
        } else if(from.equals("")) {
            condition="data_dodania <= ?";
            filtersval.put("data_dodania", to);
        } else if(to.equals("")) {
            condition="data_dodania >= ?";
            filtersval.put("data_dodania", from);
        } else {
            condition="data_dodania BETWEEN ? and ?";
            filtersval.put("data_dodania", from);
            filtersval.put("data_dodania2", to);
        }
        filters.put("data_dodania", condition);
    }
    /**metoda odpowiedzialna za filtrowanie przewoznikow po nazwie*/
    public void setNameFilter(String name) {
        if(name.equals("")) {
            filters.remove("name");
        } else {
            filters.put("name", "nazwa LIKE ?");
            filtersval.put("name","%"+name+"%");
        }
    }
   /**metoda odpowiedzialna za filtrowanie przewoznikow po adresie*/
    public void setAddressFilter(String address) {
        if(address.equals("")) {
            filters.remove("address");
            filtersval.remove("address");
            filtersval.remove("address2");
        } else {
            filters.put("address", "(adres LIKE ? OR miasto LIKE ?)");
            filtersval.put("address","%" + address + "%");
            filtersval.put("address2","%" + address + "%");
        }
    }
    /**metoda odpowiedzialna za filtrowanie przewoznikow po numerze telefonu*/
    public void setPhoneFilter(String phone) {
        if(phone.equals("")) {
            filters.remove("phone");
            filtersval.remove("phone");
        } else {
            filters.put("phone","telefon LIKE ?");
            filtersval.put("phone", "%" + phone + "%");
        }
    }
    /**metoda odpowiedzialna za filtrowanie przewoznikow po mailu*/
    public void setMailFilter(String mail) {
        if(mail.equals("")) {
            filters.remove("mail");
            filtersval.remove("mail");
        } else {
            filters.put("mail","mail LIKE ?");
            filtersval.put("mail", "%" + mail + "%");
        }
    }
    /**metoda odpowiedzialna za filtrowanie przewoznikow po osobie kontaktowej*/
    public void setContactPersonFilter(String contact) {
        if(contact.equals("")) {
            filters.remove("contact");
            filtersval.remove("contact");
            filtersval.remove("contact2");
            filtersval.remove("contact3");
        } else {
            filters.put("contact","(ok_imie LIKE ? OR ok_nazwisko LIKE ? OR ok_mail LIKE ?)");
            filtersval.put("contact", "%" + contact + "%");
            filtersval.put("contact2", "%" + contact + "%");
            filtersval.put("contact3", "%" + contact + "%");
        }
    }
    /**metoda odpowiedzialna za usuwanie przewoznika z listy*/
    public void delete(int i) {
        Przewoznik p = carrierList.get(i);
        carrierList.remove(i);
        p.delete();
        fireTableDataChanged();
    }

}

